Test automation systems are used to automatically test software-driven systems. Conventional architectures use a test harness, which is typically used to execute test cases, including test cases specified by attributes. Automated tests that use attributes normally consist of a single class with a few methods that are called by a test harness to carry out that test. Tests in accordance with the conventional architecture do not inherit test methods from other classes, which prevents the creation of common base test classes.
A conventional test harness examines each of the classes and/or methods, examines the attributes present, and then based on the examination of the attributes performs an action. This method of using attributes requires that the code necessary to perform an action to be present in the test harness. Accordingly, it is not possible to create new kinds of test attributes without modifying the test harness. Additionally, the same code often needs to be written (or modified) for each different test harness in which the code is used. The variety of functionality in conventional test harnesses can result in differences between the test harnesses such that a test may be run differently in each test harness (or tests that only run properly in one test harness), which is undesirable.
In accordance with the present invention, attributes can be reused without requiring modifications to run tests written using different test harnesses.